// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    When "continue Identifier" is evaluated Identifier must be label in the
    label set of an enclosing (but not crossing function boundaries)
    IterationStatement
es5id: 12.7_A5_T3
description: Identifier is within loop label
negative:
  phase: parse
  type: SyntaxError
---*/

function Test() {
    $DONOTEVALUATE();

    LABEL_OUT : var x=0, y=0;

    LABEL_DO_LOOP : do {
       LABEL_IN : x++;
       if(x===10)break;
       continue LABEL_IN;
       LABEL_IN_2 : y++;
       function IN_DO_FUNC(){}
    } while(0);

    LABEL_ANOTHER_LOOP : do {
        ;
    } while(0);

    function OUT_FUNC(){}
}

// preheat
const NUMBER_OF_PREHEAT = 1;
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
    Test();
}

ArkTools.jitCompileAsync(Test);
assert.sameValue(ArkTools.waitJitCompileFinish(Test), true, '[JIT] JIT disabled.');

// test
const NUMBER_OF_TEST = 1; // or 2
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
    Test();
}
